package Controller;

import java.util.ArrayList;
import java.util.List;

import Beans.AreaBean;
import Beans.SectorBean;
import DAO.HibernateAreaDAO;
import DAO.HibernateSectorDAO;
import DTO.SectorDTO;
import Model.Mesa;
import Model.Mozo;
import Model.Sector;

public class AdministradorSector {
	private static AdministradorSector instancia;
	
	private AdministradorSector(){
		
	}
	
	public static AdministradorSector getInstancia(){
		if(instancia==null)
			instancia=new AdministradorSector();
		return instancia;
	}

	public List<SectorBean> fromModelTOBean(List<Sector> sectores) {
		List<SectorBean> sectoresBean=new ArrayList<SectorBean>();
		for (Sector sector : sectores) {
			SectorBean sectorBean=fromModelTOBean(sector);
			sectoresBean.add(sectorBean);
		}
		return sectoresBean;
	}
	
	public SectorBean fromModelTOBean(Sector sector) {
		SectorBean sectorBean=null;
		if(sector!=null){
		sectorBean=new SectorBean();
		sectorBean.setIdSector(sector.getIdSector());
		sectorBean.setMesas(AdministradorMesa.getInstancia().fromModelTOBean(sector.getMesas()));
		sectorBean.setMozos(AdministradorMozo.getInstancia().fromModelTOBean(sector.getMozos()));
		sectorBean.setNombre(sector.getNombre());
		}
		return sectorBean;
	}

	public List<Sector> fromDTOTOModel(List<SectorDTO> sectoresDTO) {
		List<Sector> sectores=new ArrayList<Sector>();
		for (SectorDTO sectorDTO : sectoresDTO) {
			Sector sector=fromDTOTOModel(sectorDTO);
			sectores.add(sector);
		}
		return sectores;
	}
	
	public Sector fromDTOTOModel(SectorDTO sectorDTO) {
		Sector sector=null;
		if(sectorDTO!=null){
		sector=new Sector();
		sector.setIdSector(sectorDTO.getIdSector());
		sector.setMesas(AdministradorMesa.getInstancia().fromDTOTOModel(sectorDTO.getMesas()));
		sector.setMozos(AdministradorMozo.getInstancia().fromDTOTOModel(sectorDTO.getMozos()));
		sector.setNombre(sectorDTO.getNombre());
		}
		return sector;
	}
	
	public List<SectorDTO> fromModelTODTO(List<Sector> sectores) {
		List<SectorDTO> sectoresDTO=new ArrayList<SectorDTO>();
		for (Sector sector : sectores) {
			SectorDTO sectorDTO=fromModelTODTO(sector);
			sectoresDTO.add(sectorDTO);
		}
		return sectoresDTO;
	}
	
	public SectorDTO fromModelTODTO(Sector sector) {
		SectorDTO sectorDTO=null;
		if(sector!=null){
			sectorDTO=new SectorDTO();
			sectorDTO.setIdSector(sector.getIdSector());
			sectorDTO.setMesas(AdministradorMesa.getInstancia().fromModelTODTO(sector.getMesas()));
			sectorDTO.setMozos(AdministradorMozo.getInstancia().fromModelTODTO(sector.getMozos()));
			sectorDTO.setNombre(sector.getNombre());
		}
		return sectorDTO;
	}

	public List<Sector> fromBeanTOModel(List<SectorBean> sectoresBean) {
		List<Sector> sectores=new ArrayList<Sector>();
		for (SectorBean sectorBean : sectoresBean) {
			Sector sector=fromBeanTOModel(sectorBean);
			sectores.add(sector);
		}
		return sectores;
	}

	public Sector fromBeanTOModel(SectorBean sectorBean) {
		Sector sector=null;
		if(sectorBean!=null){
		sector=new Sector();
		sector.setIdSector(sectorBean.getIdSector());
		sector.setMesas(AdministradorMesa.getInstancia().fromBeanTOModel(sectorBean.getMesas()));
		sector.setMozos(AdministradorMozo.getInstancia().fromBeanTOModel(sectorBean.getMozos()));
		sector.setNombre(sectorBean.getNombre());
		}
		return sector;
	}

	public Mozo getMozo(List<Mesa> mesasParaAbrir) {
		return HibernateSectorDAO.getInstancia().getMozo(mesasParaAbrir);
	}
	
	public Mozo getMozoMasLibre(List<Mesa> mesasParaAbrir) {
		return HibernateSectorDAO.getInstancia().getMozoMasLibre(mesasParaAbrir);
	}

	public Sector buscarSector(Sector sector) {
		SectorBean ab=fromModelTOBean(sector);
		ab=HibernateSectorDAO.getInstancia().buscarSector(ab);
		return fromBeanTOModel(ab);
	}
}